package main

import "fmt"

func main() {
	//实现切片深拷贝   深拷贝：类似于值类型   浅拷贝：类似于引用类型
	arr1 := [4]int{1, 2, 3, 4}
	arr2 := make([]int, 0, 0)
	fmt.Println(arr1)
	fmt.Println(arr2)

	for i := 0; i < len(arr1); i++ {
		arr2 = append(arr2, arr1[i])
	}
	fmt.Println(arr1)
	fmt.Println(arr2)

	arr1[0] = 100
	fmt.Println(arr1) //[100 2 3 4]
	fmt.Println(arr2) //[1 2 3 4]

	//copy 简易实现切片的深拷贝   切片没有数组大小
	arr3 := []int{2, 3, 4}
	copy(arr2, arr3)
	//将arr3赋值给arr2后  由于arr3只有三个数 所以也就只改变arr2中前三个数
	fmt.Println(arr2) //[2 3 4 4]
	fmt.Println(arr3) //[2 3 4]
}
